<?php

namespace app\common\lib;

/**
 * aes 加密 解密类库
 * @by singwa
 * Class Aes
 * @package app\common\lib
 */
class Aes
{

    private $key = null;
    private $iv = '';

    /**
     *
     * @param $key  密钥
     * @return String
     */
    public function __construct()
    {
        // 需要小伙伴在配置文件app.php中定义aeskey
        $this->key = config('app.aeskey');
        $this->iv = config('app.aesiv');
    }

    /**
     * 加密
     * @param String $str 加密的字符串
     * @param String key   解密的key
     * @return HexString
     */
    function encrypt($str)
    {
        $strEncode = base64_encode(openssl_encrypt($str, 'AES-128-CBC', $this->key, OPENSSL_RAW_DATA, $this->iv));
        return $strEncode;
    }


    /**
     * 填充方式 aesiv
     * @param String 16位   加密长度
     * @return String
     */
    private function aesiv()
    {
        $iv = md5(time() . uniqid(), true);
        return $iv;
    }

    /**
     * 解密
     * @param String $str 解密的字符串
     * @param String key   解密的key
     * @return String
     */
    function decrypt($str)
    {
        $strdDecrypt = openssl_decrypt(base64_decode($str), 'AES-128-CBC', $this->key, OPENSSL_RAW_DATA, $this->iv);
        return $strdDecrypt;
    }


}